package 贪心;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

/**
 * @author admin
 * @version 1.0.0
 * @ClassName 检查数组是否可以被k整除.java
 * @Description TODO
 * @createTime 2020年10月20日 09:21:00
 * 给你一个整数数组 arr 和一个整数 k ，其中数组长度是偶数，值为 n 。
 *
 * 现在需要把数组恰好分成 n / 2 对，以使每对数字的和都能够被 k 整除。
 *
 * 如果存在这样的分法，请返回 True ；否则，返回 False 。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：arr = [1,2,3,4,5,10,6,7,8,9], k = 5
 * 输出：true
 * 解释：划分后的数字对为 (1,9),(2,8),(3,7),(4,6) 以及 (5,10) 。
 * 示例 2：
 *
 * 输入：arr = [1,2,3,4,5,6], k = 7
 * 输出：true
 * 解释：划分后的数字对为 (1,6),(2,5) 以及 (3,4) 。
 *
 */
public class 检查数组是否可以被k整除 {
    public static void main(String[] args) {
        int[] arr={1,2,3,4,5,10,6,7,8,9};
        int k=5;
        HashMap<Integer,Integer> map=new HashMap<>();

        for(int a:arr){
            if(map.containsKey(a%k)){
                Integer integer = map.get(a%k);
                map.put(a%k,integer+1);
            }else {
                map.put(a%k,1);
            }

        }
        Set<Integer> integers = map.keySet();
        for(Integer a:integers){
            if(a==0){

            }
            if(map.get(a)!=map.get(k-a)){
                System.out.println("错误");
            }


        }

        System.out.println("正确");
    }


}
